Background and Relevant Art
Conventional computer systems are now commonly used for a wide range of objectives, whether for productivity, entertainment, or the like. One reason for this is that, not only do computer systems tend to add efficiency with task automation, but computer systems can also be easily configured and reconfigured over time for such tasks. For example, if a user finds that one or more application programs are running too slowly, it can be a relatively straightforward matter for the user to add more memory (e.g., RAM), add or swap out one or more processors (e.g., a CPU, GPU, etc.). It may also be a straightforward matter to add or improve the current storage, or even add or replace other peripheral devices that may be used to share or handle the workload. Similarly, it can be relatively straightforward for the user to install or upgrade various application programs on the computer, including the operating system. This tends to be true in theory even on a large, enterprise scale.
In practice, however, the mere ability to add or replace physical computer hardware can often be daunting, particularly on a large scale, sometimes resulting in several hours of extra time to place and configure a new computer system (or upgrade of components). Fortunately, recent developments in virtual machine (“VM”) technology have improved or eliminated many of these types of constraints. For example, a virtual machine comprises a set of electronic files that operate as an additional, unique computer system, albeit within the confines and resource limitations of another physical host computer system.
In addition, the set of files for each virtual machine can be easily configured and re-configured in terms of resource access, and there can be several different virtual machines installed on a single physical host. Furthermore, each virtual machine can access the host's resources at different levels. Still further, the number of virtual machines—and the resource allocations for each virtual machine—on any given host computer system can be changed from time to time with relative ease. The users of each virtual machine, however, tend to be immune from such changes, and are generally able to access and view each different virtual machine as though it were a separate and distinct physical computer system with its own resources. For at least these reasons, organizations are using virtual machine technology at higher and higher rates.
In addition, another advantage of virtual systems is that administrators can add almost as many virtual machines as needed at a moment's notice in order to run certain application programs. For example, a system administrator might determine a need some point to create one or more virtual machines to handle a database application in one network location, and determine a need to create another set of virtual machines to handle network and email traffic at another network location. Upon making the determination, the system administrator essentially creates the virtual machines where needed, and then configures the virtual machines for these applications. Such configurations can involve the system administrator (or, in some cases, a different application administrator) installing the relevant application programs on the new virtual machines. All of this provisioning and installation could occur within just a few hours from determining the initial needs.
Of course, the ease by which an administrator can establish and setup virtual machines to handle applications can result in other problems related to management of not only of virtual machines, but also of application programs running thereon. Specifically, an increasingly common problem is that organizations are often creating and using virtual machines more quickly than they can track. Due to the speed of virtual machine creation, any given administrator may be unaware just how many virtual machines are created at a given time, and which virtual machines are created for any particular physical host.
Similarly, there is often a record keeping disconnect that occurs in identifying which virtual machines are running, and which applications are running on the virtual machines. Conventional mechanisms for keeping track of such information generally involve administrators maintaining detailed logs (e.g., on a spreadsheet) about what they have created and what they have deleted or decommissioned. Not only can this be fairly onerous for large numbers of virtual machines and application programs, but there is often a lack of consistency between what administrators will create, and what the other administrators will enter into the log. This is particularly true of enterprise systems that may have a large number of administrators or users that are installing and using virtual machines.
Thus, it is not uncommon, particularly for large organizations, for a system administrator to keep track of a certain set of virtual machines on one set of physical hosts, but be unaware that another administrator has installed other applications on those virtual machines. If the administrator that initially created the virtual machine tries to delete or decommission the virtual machine, that administrator might receive an error message indicating that other applications are running on the virtual machine. The initial administrator might then leave the virtual machine alone. When the other administrator later removes the other application program that prevented deletion of the virtual machine, and fails to delete the virtual machine, the virtual machine may remain on the system almost indefinitely.
Thus, one will appreciate that the life cycle of a given application program often fails to coincide with the life cycle of a virtual machine. This is partly since there is little to ensure that an administrator will decommission or remove a virtual machine when the administrator has uninstalled the application program, and no longer needs the virtual machine. For these and other reasons, organizations that implement virtualization technology often run into a problem commonly known as “virtual machine sprawl” (or “VM sprawl.”)
Essentially, virtual machine sprawl describes a situation in which an organization may be continually creating virtual machines, but is otherwise losing track of how the virtual machines are being used, and/or who may still be using the virtual machines. One will appreciate that virtual machine sprawl can create an unnecessary drain on the organization's resources. This drain occurs at least in part since the virtual machines that should be deleted may still be holding onto various hardware resources that cannot be used by other virtual machines. This drain also occurs at least in part since the organization's staff may need to expend a large number of resources to correctly identify the particulars of each virtual machine in the system, and determine whether the virtual machines are needed at all.
Accordingly, there are a number of difficulties with managing virtual machines in an organization that can be addressed. One will appreciate that such difficulties can be particularly acute when an organization is using distributed application programs that involve several components executing at several different virtual (and physical) machines.